/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.gob.dgii.controlador;


import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;
import sv.gob.dgii.entidades.DeRucOpcionMsj;
import sv.gob.dgii.entidades.DeRucPerfilOpc;

/**
 *
 * @author luisrg
 */

public class DeRucOpcionMsjFacade extends AbstractFacade<DeRucOpcionMsj> {
    
    

    @Override
    protected EntityManager getEntityManager() {
        return Conexion.obtenerManejadorEntidades();
    }

    public DeRucOpcionMsjFacade() {
        super(DeRucOpcionMsj.class);
    }
    
    public Integer obtenerSiguienteCorrelativo(){
        try{
        StringBuilder str = new StringBuilder();
        str.append("select max(d.").append("idOpcionMensaje").append(")+1 correlativo from ");
            str.append(super.entityClass.getSimpleName()).append(" d");
            Query q = getEntityManager().createQuery(str.toString());
            Object valor = q.getSingleResult();
            return Integer.parseInt(valor.toString());
        }catch(Exception e){
            e.printStackTrace();
            return 1;
        }
    }
    
    
    public List<DeRucOpcionMsj> obtenerOpcionMensajePorPerfilOpcion(DeRucPerfilOpc perfilOpcion){
        
        if(perfilOpcion.getDeRucOpcion()==null){
            return new ArrayList<DeRucOpcionMsj>();
        }
        
        System.out.println("Obteniendo nuevamente la lista por perfil opcion");
        javax.persistence.Query q = getEntityManager().createQuery("SELECT d FROM DeRucOpcionMsj d inner join d.deRucPerfilOpc op inner join op.deRucPerfil p inner join op.deRucOpcion o   WHERE d.deRucPerfilOpc.deRucOpcion.idOpcion = :idOpcion AND d.deRucPerfilOpc.deRucPerfil.idPerfil = :idPerfil");
        //javax.persistence.Query q = getEntityManager().createQuery("SELECT d FROM DeRucOpcionMsj d  WHERE d.deRucPerfilOpc.deRucOpcion.idOpcion = :idOpcion AND d.deRucPerfilOpc.deRucPerfil.idPerfil = :idPerfil");
        q.setParameter("idOpcion", perfilOpcion.getDeRucOpcion().getIdOpcion());
        q.setParameter("idPerfil", perfilOpcion.getDeRucPerfil().getIdPerfil());
        return q.getResultList();
    }
    
}
